Dataprojektin
Pilvitietokantadokumentti
AWS + MySQL
Tässä dokumentissa käyn läpi kohdat, jonka mukaan loin ja ylläpidän dataprojektimme
tietokantaa Amazonin Amazon Web Service -pilvipalvelussa.
Huomiona, että ennen dokumentin luontia on luotu jo AWS juurikäyttäjä sekä admins
käyttäjäryhmä ja MySQL Workbenchin asennus on tehty etukäteen. Näitä asioita ei
dokumentissa käydä läpi. Dokumentissa ytetään myös oletusarvoisia ja AWS:n
suosittelemia IP-osoitteita, aliosoitteita ja sekä muita oletusasetuksia. Kaikki
dokumentissa käytettävät palvelut sisältyvät AWS:n Free Tier -ohjelmaa, joten tätä
dokumenttia seuraamalla pystyt rakentamaan vastaavan projektin ilmaiseksi.
Käytettävät ohjelmat ja alustat:
https://aws.amazon.com/console/
https://www.mysql.com/products/workbench/
1.
IAM Käyttäjän luonti
2.
VPC virtuaaliverkon luonti
3.
EC2 virtuaalikoneen luonti
4.
RDS tietokantapalvelun luonti
5.
MySQL Workbench, tietokannan luonti ja hallinta
6.
MySQL käyttö Linux CLI
Sisältö
1. IAM KÄYTTÄJÄN LUONTI
Tässä osiossa käydään läpi kuinka luodaan IAM-käyttäjä ja miten
IAM-käyttäjälle lisätään käyttäjäoikeudet AWS konsoliin.
IAM eli Identity and Access Management on järjestelmä, prosessi tai teknologia, joka hallinnoi
käyttäjien identiteettejä ja näiden pääsyä tietoresursseihin organisaatiossa. Sen päätavoitteena on
varmistaa, että oikeat henkilöt ja roolit (käyttäjät) saavat oikeanlaisen pääsyn organisaation
teknologiaresursseihin oikeaan aikaan ja oikeista syistä.
Aloitetaan AWS konsolin dashboardilta:
AWS konsolin etusivulta haetiin IAM palvelu kirjoittamalla haku kenttään
“IAM”
IAM Dashboardilta valittiin “Users”
Tämä ohjaa Users -välilehdelle, jossa on listattu käyttäjät. Käyttäjän luonti
onnistui “Create user” painikkeella.
Tässä luodaan IAM-käyttäjän nimi ja luodaan salasana. Valittiin“I want to create an IAM user”. Käytettiin
mukautettua salasanaa ja ei pyydetty salasanan vaihtoa kirjautumisen yhteydessä
Seuraavaksi valittiin oikeudet käyttäjälle. Tässä projektissa käytettiin “Admins” -ryhmää, jossa
rajattomat käyttöoikeudet AWS:lle.
Tässä tarkistetaan vielä, että asetukset ovat haluttuja ja käyttäjä luodaan “Create user” -painikkeella.
Kun käyttäjä on luotu, niin AWS ohjaa seuraavalle sivulle, jossa kirjautumislinkki konsoliin, käyttäjänimi ja salasana.
Huomiona: AWS muistuttaa vielä, että salasanaa ei ole katsottu, joten tämän pop-upin voi sivuuttaa tai voit
tarkistaa salasanasi “Show” -linkin kautta.
Tämä jälkeen voidaan kirjautua yttäjällä esim. kopioimalla Console sign-in URLin selaimen hakupalkiin.
Kirjauduttiin käyttämällä luotua IAM-käyttäjää
Account ID = juurikäyttäjä
IAM user name = luotu IAM-käyttäjä
Password = luotu mukautettu salasana
Käyttäjä ja data centterin alue näkyvät
konsolissa oikealla ylhäällä
2. VPC VIRTUAALIVERKON LUONTI
Tässä osiossa näytetään miten luodaan VPC virtuaaliverkko ja mitä asetuksia
VPC luonnin yhteydessä voidaan tehdä.
VPC eli Virtual Private Cloud on eristetty verkko, jonka avulla organisaatiot voivat luoda oman
yksityisen pilvi-infrastruktuurin julkisessa pilvipalvelussa, kuten Amazon Web Services (AWS),
Google Cloud Platform (GCP) tai Microsoft Azure. VPC tarjoaa korkean turvallisuustason ja
hallinnan yrityksen IT-resursseihin pilvessä.
AWS konsolin hakupalkista haetaan “VPC”
VPC palvelun dashboardilta voidaan valita Create VPC tai vaihtoehtoisesti sivuvalikosta valita “Your
VPCs”
Tässä luotiin oma VPC
-VPC nimi
-IPv4 CIRD Block (käytetään AWS:n
oletustietoa
-IPv6 CIDR Block (ei käytetä)
-Number of Availability Zones
(oletusmäärä)
-Number of public subnets
(oletusmäärä)
-Number of private subnets
(oletusmäärä)
-NAT gateways (ei käytetä)
-VPC endspoints (oletus)
-DNS options (oletus)
Tässä projektissa käytin
oletusasetuksia suurimilta osin.
Tässä vielä esikatselu miltä virtuaaliverkko näyttää
AWS VPC workflow
Tältä näyttää lopulliset asetukset luodulle VPC:lle
Tässä vielä kuva VPC listauksesta.
3. EC2 virtuaalikoneen luonti
Tässä osiossa luodaan EC2 instanssi käyttäen AWS Free tier-ohjelman
suosittelemia asetuksia ja palveluita. Projektissa käytettiin Amazon 2023
Linux käyttöjärjestelmää.
EC2 eli Amazon Elastic Compute Cloud on Amazon Web Servicesin (AWS) tarjoama pilvilaskentapalvelu,
jonka avulla käyttäjät voivat vuokrata virtuaalisia palvelimia (tunnetaan nimellä "instanssit") käyttöönsä
verkon kautta. EC2 tarjoaa skaalautuvan laskentatehon, joka mahdollistaa sovellusten suorittamisen
pilvessä joustavasti ja kustannustehokkaasti.
AWS konsolin hakupalkista EC2
EC2 dashboardilta valitaan, joko “Launch instance” tai vaihtoehtoisesti voidaan valita sivuvalikosta “Instances” ja
käynnistää EC2 virtuaalikone sitä kautta. Alempi kuva.
-Annettiin instansille nimi “dataprojekti-ec2”.
-Käyttöjärjestelmänä käyttiin Amazon Linux 2023
AMI.
-Instanssi tyyppi t3.micro Free tier ohjelman mukaan.
Luotiin avainpari “demokey” ssh yhteyden luonti varten.
Käytettävä .pem formaattia ja ED25519 kryptausta, sillä EC2
yhdistetään myöhemmin MySQL Workbenchin kanssa.
Mukautetaan oletus verkkoasetuksia siten, että voitiin valita aiemmin luomamme VPC:n sekä aliverkon. Auto-assign
public IP tuli sallia.
Käytettiin Free tierin sallimaa kovalevysasetuksia.
Tässä vielä yhteenveto EC2 instanssista ->
Tässä vielä vilkaisu “Instance” välilehden osalta. Tämä kautta voidaan hallinnoida EC2 instanssia ja yhdistää itse
instassiin “Connect” napin kautta. Tästä myöhemmin. Alla tärkeitä IP-tietoja Workbencin yhdistämisen silmällä pitäen.
4. RDS tietokantapalvelun luonti
RDS eli Amazon Relational Database Service on Amazon Web Servicesin (AWS) tarjoama hallinnoitu
tietokantapalvelu, joka helpottaa relaatiotietokantojen käyttöönottoa, hallintaa ja skaalausta
pilvessä. RDS tukee useita suosittuja tietokantamoottoreita, kuten Amazon Aurora, PostgreSQL,
MySQL, MariaDB, Oracle Database ja Microsoft SQL Server
Tässä osiossa luodaan AWS RDS tietokantapalvelu, jossa käytetään MySQL
tietokantajärjestelmää ja se liitetään aiemmin luotuun EC2 instanssiin.
AWS konsolin hakupalkista RDS
RDS dashboardilta voidaan valita suoraa “Create database” tai vaihtoehtoisesti sivuvalikosta valita “Databases” ja
sitä kautta valita “Create database”
-RDS luotiin “Easy create” konfiguraation
mukaan.
-Valittiin MySQL ohjelmisto.
-Free tierin t3.micro instanssi
-Annettiin tietokantainstanssille nimi
“demoprojekti-database”
-Pääkäyttäjäksi Admin
-Hallitaan itse pääsyä RDSään
-Luotiin salasana
Liitettiin RDS:n
luonnissa RDS kiinni jo
aiemmin luotuun
“dataprojekti-ec2” EC2
instanssiin.
Tämä luo valmiiksi jotain
security grouppeja jotta
EC2 instanssilla on pääsy
RDSään.
Tässä vielä kuvat database-listauksesta ja tarkempia
tietoja RDS:tä. Tärkeä endpoint-osoite, jotta pääsemme
käsiksi RDS-instanssiin Workbenchillä ja CLI:lla.
5. MySQL Workbench, tietokannan
luonti ja hallinta
MySQL Workbench on visuaalinen työkalu, joka tarjoaa graafisen käyttöliittymän MySQL-
tietokannan hallintaan ja kehitykseen. Se tarjoaa monipuolisia ominaisuuksia, jotka helpottavat
tietokantasuunnittelua, kehitystä, hallintaa ja ylläpitoa. Tämä työkalu on erityisen suosittu MySQL-
tietokantojen kanssa työskentelevien kehittäjien ja tietokanta-asiantuntijoiden keskuudessa.
Tässä osiossa käydään läpi miten luodaan yhteys paikalliselle palvelimelle sekä
pilvipalvelimelle käyttäen MySQL Workbench visuaalista työkalua. Kuinka luodaan
tietokanta, tuodaan data tietokantaa, muokataan dataa siten, että sensitiivinen
asiakasdata jää paikalliselle palvelimelle ja muu data siirretään pilvipalvelimelle.
Valittiin tietokantaohjelmaksi MySQL Workbench. Tässä tehtiin ensi testi, et
yhteys meidän pilvipalvelimelle toimii. MySQL Workbenchin valikosta “Database”
ja valikosta “Manage Connections”
Haluttiin luoda oma yhteys, joten ensin valittiin
“New” tämän jälkeen nimettiin yhteys “demo”.
-Connection Method on Standard TCP/IP over SSH.
Tarvitaan, jotta voimme yhdistää Workbenchin EC2
instanssiimme.
-SSH Hostname tähän käytettiin “dataprojekti-ec2”
instanssin julkista IP:tä.
-SSH Username on ec2-user. Tämä on AWS:n
oletuskäyttäjä EC2 instanssissa.
-SSH Key Filena käytettiin aiemmin luota .pem
tiedosto EC2 instanssin luonnin yhteydessä.
-MySQL Hostname tämä saadaa AWS:ltä aiemmin
mainitsemani RDS endpoint-osoite.
-MySQL Server Port on 3306, tämä on vakioportti
jota käytetään MySQL:ssä.
-Username on RDS instanssi pääkäyttäjä eli admin.
Kun testaamme yhteyttä “Test connection” kautta,
niin MySQL kysyy salasanaa, joka on RDS:lle luotu
salasana.
Kaikki tehtiin oikein ja saatiin onnistunut yhteys meidän pilvipalvelimeen.
Kun yhteys pilvipalvelimeen onnistui, niin seuraavaksi meidän tuli yhdistää Workbenchimme paikalliseen
tietokantapalvelimeen. Se onnistui oletusasetuksilla
Tässä on meidän paikallinen tietokantapalvelin. Meillä on olemassa useampi tietokanta.
Seuraavaksi tuli luoda paikalliselle
tietokantapalvelimelle meidän popup_myynti-
tietokanta. Tämä onnistui käyttämällä
Workbenchin Data Import -työkalua.
Tässä tein testin, että data on luotu paikalliselle
tietokantapalvelimelle
Halusimme pilkkoa popup_myynti tietokannan datan siten, että asiakasdatasta
tunnistettavat tiedot ävät paikalliselle palvelimelle ja muu data voidaan
säilyttää pilvessä paikallisen datan rinnalla.
Tässä tein ratkaisuksi, että luodaan nykyisestä asiakas-taulusta väliaikainen
asiakas_temp-taulu, jossa tunnistettava asiakasdata muutetaan NULL-arvoon.
CREATE TABLE asiakas_temp AS
SELECT asiakas_id, NULL AS puhelinnumero, NULL AS sähköposti, ikä, sukupuoli
FROM asiakas;
Tämän jälkeen poistettiin alkuperäinen asiakas-taulu ja muutettiin
asiakas_temp-taulu uudeksi asiakas-tauluksi.
DROP TABLE IF EXISTS asiakas;
RENAME TABLE asiakas_temp TO asiakas;
Tämä jälkeen tein Workbenchin Data
export -työkalulla päivitetystä
popup_myynti datasta dump-tiedoston,
joka sitten siirretään pilvipalvelimelle.
Tässä popup_myynti tietokanta pilvipalvelimella
6. MySQL käyttö Linux CLI
Tässä osiossa käyn läpi miten otetaan yhteys EC2 instanssiin AWS konsolin kautta,
korjataan security groupia, asennetaan MySQL -tietokantajärjestelmä Linux
käyttöjärjestelmälle, otetaan yhteys RDSään Linuxin komentoriviä käyttäen, otetaan
yhteys tietokantaan popup_myynti ja tehdään muutama SQL-kysely testiksi.
Näytetään vielä yksi kysely MySQL Workbenchin avulla.
MySQL on avoimen lähdekoodin relaatiotietokantajärjestelmä, joka perustuu SQL-kieleen
(Structured Query Language). Se on yksi maailman suosituimmista tietokantajärjestelmistä ja sitä
käytetään laajasti erilaisissa sovelluksissa, kuten verkkosivustoissa, sovelluskehityksessä ja
analytiikassa.
Linux on avoimen lähdekoodin ja vapaa Unix-pohjainen käyttöjärjestelmä, joka on kehitetty alun
perin Linus Torvaldsin toimesta vuonna 1991. Siitä lähtien se on kasvanut ja laajentunut yhteisön
ja monien yritysten tukemana, ja se on nykyään yksi maailman käytetyimmistä
käyttöjärjestelmistä, erityisesti palvelinympäristöissä, sulautetuissa järjestelmissä ja tietokoneiden
käyttöjärjestelminä.
Tässä testattiin MySQL:n käyttöä Linux CLI kautta. Alla “Connect” -painikkeella päästiin käsiksi EC2
pyörivaan käyttöjärjestelmään.
Huomiona, että EC2 instanssi on ollut käynnissä koko ajan.
Yhteydenotto instanssiin ei onnistunutkaan,
kun unohdettiin sallia portti 22 EC2 instanssin
region IP security groupiin.
Onneksi AWS ohjaa suoraa oikealla security
groupille.
Tällä sivulla pääsemme muokkaamaan security groupia “Edit inbound rules”.
Add rule ja lisätään tyypiksi SSH ja lisätään IP-osoite
Source kenttään.
AWS kertoo EC2 instanssin yhteydenoton yhteydessä
tarjoamasta huomautuksessa tarvittavan IP:n joka tulee
lisätä.
Kun security group on korjattu, niin
saatiin yhteys EC2:lla asennettuun
Amazon Linux 2023
käyttöjärjestelmään.
Tietysti kun käyttöjärjestelmä käynnistettiin ensimmäisen kerran, niin meiltä
puuttuu tarvittava MySQL-ohjelma, joten se asennettiin seuraavasti.
Dokumentin selkeyden vuoksi lisään tähän ainoastaan ajamani komennot, jolla sain
asennettua MySQL:n Linuxille.
sudo wget https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
ls -lrt
sudo dnf install mysql80-community-release-el9-1.noarch.rpm -y
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
sudo dnf install mysql-community-server -y
sudo systemctl start mysqld
sudo nano /etc/my.cnf --> Kirjaa: skip-grant-tables
sudo systemctl restart mysqld
Ja tällä komennolla otin yhteyden RDS instanssilla pyörivään tietokantapalvelimeen.
mysql -h rds-endpoint -u username -p
Tältä näyttää sitten MySQL Linux CLI:llä.
Tähän on ajattu komento “show databases;”
näyttää RDS:llä olevat tietokannat.
Tämän jälkeen otettu yhteys popup_myynti
tietokantaan komennolla “\r popup_myynti”
Vielä ajettu komento “show tables;”, joka
näyttää popup_myynti tietokannan taulut.
Tässä on tehty pari SQL-kyselyä. Ensin on haettu vain asiakas-taulusta 10 riviä dataa perinteisellä SELECT * FROM
asiakas; -kyselyllä. Alempana hieman isompi kysely, jossa testataan taulujen yhteyksiä. Kyselyn on luonut Maarit.
Kyselyiden tarkoitus on vain testata pilvitietokannan toimivuutta.
Tässä vielä sama kysely MySQL:n puolella. Kyseessä on sama pilvitietokanta, mutta Workbencillä.
Dokumentin on luonut Kari-Matti Sillanpää
Selitteissä on käytetty ChatGPT:tä
kuvaamaan tiettyjä teknologiota, palveluita
ja termejä.